/*
** Copyright (C) 2011 Viens Yann
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#include "ImageConvertor.hpp"

QImage*		ImageConvertor::IplImageToQtImage(IplImage *input)
{
  static QImage	*image = new QImage(input->width, input->height, QImage::Format_RGB32);
  QRgb		value;
  uchar*	pBits = image->bits(), *scanLine;
  int		nBytesPerLine = image->bytesPerLine(), x, y;
  CvScalar	pixel;

  for (y = 0; y < input->height; y++)
    {
      for (x = 0; x < input->width; x++)
        {
	  pixel = cvGet2D(input, y, x);
	  value = qRgb(static_cast<uchar>(pixel.val[2]), static_cast<uchar>(pixel.val[1]), static_cast<uchar>(pixel.val[0]));
	  scanLine = pBits + y * nBytesPerLine;
	  (reinterpret_cast<uint *>(scanLine))[x] = value;
        }
    }
  return image;
}
